When processing I/O requests, computer storage systems typically implement read and write caches in order to enhance performance. A read cache typically comprises high-speed memory that is configured to store data that was recently retrieved from a disk, plus data that the computer system anticipates will be requested in the near future.
For example, if a storage system receives a read request to retrieve data from a specific physical region of a storage device, in addition to processing the retrieval request, the computer system may also retrieve physical regions on the storage device that follow the specific region, and load the retrieved physical regions to the read cache. In operation, if a host computer issues a read request for data that is currently in the read cache, then the storage system conveys the data directly from the read cache to the host computer, thereby eliminating the need to physically retrieve the data from the disk. Read performance is therefore enhanced, since retrieving data from the read cache is much faster than retrieving the data from the disk.
When processing a write request received from a host computer, the storage system stores the write request data in the write cache, and then conveys an acknowledgement to the host computer that the data has successfully been written to the disk. Upon receiving the acknowledgement, the host computer can proceed as if the data has successfully been written to the disk. In operation, the storage system is configured to destage (i.e., transfer) data from the write cache to the disk at a subsequent time, typically when the write cache reaches a specific utilization level. Write performance is therefore enhanced, since the write cache data (comprising data from multiple write requests) can usually be transferred to the disk in a smaller number of physical write operations than would have been required had each write request been individually stored to the disk.